<?php
namespace SimpleMVC\lib;

class Log {
	
	private static $savePath = '';
	
	public static function setSavePath($savePath)
	{
		self::$savePath = rtrim($savePath, ' /') . '/';
	}
	
	/**
	 * 保存日志
	 * @param string $fileName 文件名
	 * @param mixed $data 要打印到日志的数据（可以是数组、对象等）
	 * @param string $tag 标记
	 * @return boolean
	 */
	public static function save($fileName, $data)
	{
		$fileName = trim(str_replace('\\', '/', $fileName), ' /');
		$fullName = self::$savePath . $fileName;
		$dir = dirname($fullName);
		if (!is_dir($dir) && !@mkdir($dir, 0777, true)) {
			return false;
		}
		$data = '[' . date('Y-m-d H:i:s') . "]\r\n" . (is_string($data) || is_numeric($data) ? $data : var_export($data, true)) . "\r\n\r\n";
		$len = @file_put_contents($fullName, $data, FILE_APPEND);
		return $len === false ? false : true;
	}
	
	public static function debug($data)
	{
		$fileName = 'debug.' . date('Ymd') . '.log';
		return self::save($fileName, $data);
	}
	
	public static function info($data)
	{
		$fileName = 'info.' . date('Ymd') . '.log';
		return self::save($fileName, $data);
	}
	
	public static function warning($data)
	{
		$fileName = 'warning.' . date('Ymd') . '.log';
		return self::save($fileName, $data);
	}
	
	public static function error($data)
	{
		$fileName = 'error.' . date('Ymd') . '.log';
		return self::save($fileName, $data);
	}
	
	public static function __callstatic($name, $arguments)
	{
		if (empty($arguments)) {
			return;
		}
		$fileName = $name . '.log';
		return self::save($fileName, count($arguments) == 1 ? $arguments[0] : $arguments);
	}
}
